package com.caius.xiaohashu.user.biz.service;

import com.caius.framework.common.response.Response;
import com.caius.xiaohashu.user.biz.model.vo.UpdateUserInfoReqVO;
import com.caius.xiaohashu.user.dto.req.*;
import com.caius.xiaohashu.user.dto.resp.FindUserByIdRspDTO;
import com.caius.xiaohashu.user.dto.resp.FindUserByPhoneRspDTO;

import java.util.List;

/**
 * @author Caius
 * @description 用户业务
 * @since Created in 2025-05-17
 */
public interface UserService {

    /**
     * 更新用户信息
     * @param updateUserInfoReqVO
     * @return
     */
    Response<?> updateUserInfo(UpdateUserInfoReqVO updateUserInfoReqVO);

    /**
     * 用户注册
     * @param requestUserReqDTO
     * @return
     */
    Response<Long> register(RegisterUserReqDTO requestUserReqDTO);

    /**
     * 通过手机号查找用户
     * @param findUserByPhoneReqDTO
     * @return
     */
    Response<FindUserByPhoneRspDTO> findByPhone(FindUserByPhoneReqDTO findUserByPhoneReqDTO);

    /**
     * 更新密码
     * @param updateUserPasswordReqDTO
     * @return
     */
    Response<?> updateUserPassword(UpdateUserPasswordReqDTO updateUserPasswordReqDTO);

    /**
     * 通过用户 ID 查询用户信息
     * @param findUserByIdReqDTO
     * @return
     */
    Response<FindUserByIdRspDTO> findById(FindUserByIdReqDTO findUserByIdReqDTO);

    /**
     * 批量查找用户信息
     * @param findUsersByIdsReqDTO
     * @return
     */
    Response<List<FindUserByIdRspDTO>> findUsersByIds(FindUsersByIdsReqDTO findUsersByIdsReqDTO);
}
